package com.soft.javase.ch03.abstracts;

/**
 * @author wangzhisen
 * @Desc TODO
 * @date 2025/4/21
 * 抽象类
 * 1.abstract class
 * 2.抽象类允许有成员属性、成员方法、构造方法等，可以没有抽象方法
 * 3.不能进行new创建的，只能被当做是父类类型
 *
 * 抽象方法
 * 1.访问权限修饰符 abstract void/返回值数据类型  方法名(形参列表);
 * 2.一个类中一旦有抽象方法，则当前类必须是抽象类
 * 3.留待到子类继承父类时，要么实现该抽象方法；要么子类也变成抽象类
 *
 * abstract 总结
 * 特点：
 *   3.1 对于抽象类来说，当前类中可以没有抽象方法，而且可以像普通类一样编写（允许有属性、构造方法等成员）
 *   3.2 一旦一个类中有抽象方法时，则当前类必须是抽象类
 *   3.3 抽象类只能当做父类，不能被实例化
 *   3.4 abstract 能否和  final 一起使用呢？  不能使用
 *   3.5 一个类继承了抽象类，要么重写抽象类中所有的抽象方法，要么自己也变成抽象类
 */
public abstract class Shape {
    //成员属性
    private String name;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    //成员方法
    public abstract void draw();

    //构造方法
    public Shape(){

    }
}
